// 数组扁平化   
var arr = [1,2,[3,4],[5,6,7],8] ;
function flat(arr) {
    let res = [];  
    for(let i =0; i < arr.length;i++ ){
        if(Array.isArray(arr[i])){
            for(let key of arr[i]){
                res.push(key)
            }
        }else{
            res.push(arr[i]);
        }
    }
    return res;
}
console.log(flat(arr),']]]]')  

//api flat  
console.log(arr.flat(),'[[[[')  

// 使用reduce实现   
function flat1(arr) {
    return arr.reduce((pre,cur) =>{
        return pre.concat(Array.isArray(cur) ? flat1(cur) : cur)
    },[])  //[] 传递给函数的初始值，相当于pre的初始值  
}  
console.log(flat1(arr),'////')